Dealing with large software programs can be challenging. For example, for a program involving a large amount of source code, it may be impossible for a developer to fathom the totality of the program and how a particular component fits within the program. Some representations of software, such as class hierarchies and UML class diagrams can be helpful.
However, such conventional approaches can break down under certain circumstances, such as if the program is particularly complex or lengthy. Better ways of dealing with software are still needed.